package uba.fi.tda.tp1.sorts;

public abstract class GenericSort {
	private Long time;
	
	/**
	 * Metodo de ordenamiento generico que toma el tiempo en que se genera el ordenamiento
	 * @param numbers
	 * @return
	 */
	public int[] sort(int[] numbers) {
		int[] result = null;
		Long start = System.nanoTime();
		
		result = sortMethod (numbers);
		
		Long end = System.nanoTime();
		time = (end - start)/1000;
		
		return result;
	}
	
	/**
	 * Implementacion de cada metodo de ordenamiento
	 * @param numbers Arrays de enteros a ser ordenados
	 * @return Devuelve el vector de entrada ordenado, sin tocar el recibido por parametro
	 */
	protected abstract int[] sortMethod(int[] numbers);

	public Long getLastSortTime() {
		return time;
	}

}
